#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#define M 4

//Estructuras
struct nacimiento {int dia;
				   int mes;
				   int ano;
				  };
struct persona {char nombre[40];
				int edad;
				struct nacimiento nas;
			   };

//Prototipo de Funciones
void nomingreso(struct persona [], int);
int anoingreso(int, int);
int mesingreso(int, int);
int diaingreso(int, int);

//Funciones
void nomingreso(struct persona per[],int i)
{
	fflush(stdin);
	gets(per[i].nombre);
}
	
int anoingreso(int x, int y)
{
	int aux;
	scanf ("%d",&aux);
	while (aux<x || aux>y)
	{
		printf ("Reingrese el ano: ");
		scanf ("%d",&aux);
	}
	return aux;
}

int mesingreso(int x, int y)
{
	int aux;
	scanf ("%d",&aux);
	while (aux<x || aux>y)
	{
		printf ("Reingrese el mes: ");
		scanf ("%d",&aux);
	}
	return aux;
}

int diaingreso(int x, int y)
{
	int aux;
	scanf ("%d",&aux);
	while (aux<x || aux>y)
	{
		printf ("Reingrese el dia: ");
		scanf ("%d",&aux);
	}
	return aux;
}	

//Main
void main(void)
{
	struct persona per[M],auxs;
	int i,opc,j;
	char aux[40];
	for (i=0;i<M;i++)
	{
		clrscr();
		printf ("Ingrese el nombre: ");
		nomingreso(per,i);
		printf ("Ingrese el dia de nacimiento: ");
		per[i].nas.dia=diaingreso(1,31);
		printf ("Ingrese el mes de nacimiento: ");
		per[i].nas.mes=mesingreso(1,12);
		printf ("Ingrese el ano de nacimiento: ");
		per[i].nas.ano=anoingreso(1920,2011);
		per[i].edad=2011-per[i].nas.ano;

	}
	while (opc!=3)
	{
		clrscr();
		printf ("(1) Modificar fecha\n(2)Mostrar datos\n(3)Salir");
		scanf("%d",&opc);
		switch(opc)
		{
			case 1:
					printf ("Ingrese el nombre de la persona: ");
					fflush(stdin);
					gets(aux);
					for (i=0;i<M;i++)
					{
						if (strcmp(per[i].nombre,aux)==0)
						{
							printf ("Ingrese el dia de nacimiento: ");
							per[i].nas.dia=diaingreso(1,31);
							printf ("Ingrese el mes de nacimiento: ");
							per[i].nas.mes=mesingreso(1,12);
							printf ("Ingrese el ano de nacimiento: ");
							per[i].nas.ano=anoingreso(1920,2011);
							per[i].edad=2011-per[i].nas.ano;
							break;
						}
						else
						{
							if (i==M-1)
							{
								printf ("Nombre no encontrado");
								getch();
							}
						}
					}
					break;
	
			case 2:
					for (i=0;i<M;i++)
						for (j=i+1;j<M;j++)
							if (per[i].edad>=per[j].edad)
							{
								auxs=per[i];
								per[i]=per[j];
								per[j]=auxs;
							}
					printf ("Nombre\tNacimiento\tEdad\n");
					for (i=0;i<M;i++)
						printf ("%s\t%d/%d/%d\t%d\n",per[i].nombre,per[i].nas.dia,per[i].nas.mes,per[i].nas.ano,per[i].edad);
					getch();
					break;
					
			case 4:
					printf ("Hasta luego");
					break;
		}
	}
}
			